﻿#include <iostream>
#include <memory>
using namespace std;

template <class T,class T2>
auto add(T x,T2 y)->decltype (x+y)
{
    return x+y;
}

int main()
{
    auto x=1000;
    auto y=99.99;
    cout<<add(x,y)<<endl;
//    unique_ptr<int> ptr1(new int(100));
//    cout << *ptr1<<endl;
//    unique_ptr<int> ptr2=move(ptr1);
//    cout << *ptr2<<endl;
   // cout << *ptr1<<endl;//转移后会阻塞

   //[]捕获列表，只能使用不能修改
//    auto func=[x](int x1,int y1)mutable{
//        x=2000;
//        return x+y1+x1;};
//    cout <<func(x,y)<<endl;
//    cout << x<<endl;

//    decltype(func) fun2=func;
//    cout<<fun2(x,y)<<endl;



//    auto func=[&]()mutable->double
//    {
//        int x1;
//        int y1;
//        x=10;
//        x1=x;
//        y1=y;
//        return x1+y1;
//    };
//    cout << func()<<endl;
//    cout << x<<endl;
    return 0;
}
